home *** CD-ROM | disk | FTP | other *** search
/ Aminet 22 / Aminet 22 (1997)(GTI - Schatztruhe)[!][Dec 1997].iso / Aminet / dev / e / amigae33a.lha / E_v3.3a / Src.lha / Src / Afc / BeBox_Example1.e next >
Text File  |  1997-09-09  |  3KB  |  126 lines

  1. /*
  2.  
  3.   $VER: BeBox Example 1 - (C)Copyright Amiga Foundation Classes
  4.  
  5.   Written By:   Fabio Rotondo
  6.  
  7.   This example just shows some features of the BeBox class.
  8.  
  9.   Please, note the "mydraw" function.
  10.  
  11. */
  12.  
  13. MODULE 'afc/explain_exception', 'afc/bebox',
  14.        'intuition/intuition', 'intuition/screens'
  15.  
  16. PROC main() HANDLE
  17.   DEF bb=NIL:PTR TO bebox
  18.   DEF scr=NIL:PTR TO screen
  19.   DEF win=NIL:PTR TO window
  20.  
  21.   NEW bb.bebox()    -> Class initialization
  22.  
  23.  
  24.  
  25.   IF (scr:=LockPubScreen('Workbench'))=NIL THEN Raise("scr")
  26.  
  27.   IF (win:=OpenWindowTagList(NIL,
  28.                   [WA_LEFT,    0,
  29.                    WA_TOP,     0,
  30.                    WA_WIDTH, scr.width,
  31.                    WA_HEIGHT, scr.height,
  32.                    WA_FLAGS, WFLG_BORDERLESS OR WFLG_BACKDROP OR WFLG_NOCAREREFRESH,
  33. ->                   WA_CUSTOMSCREEN, scr,
  34.                    0,0]))=NIL THEN Raise("win")
  35.  
  36.  
  37.   bb.setattrs([BB_POSX,    10,
  38.                BB_POSY,    10,
  39.                BB_WIDTH,  100,
  40.                BB_HEIGHT, 100,
  41.                BB_RPORT,  scr.rastport,
  42.                BB_MAXX,   scr.width-1,
  43.                BB_MAXY,   scr.height-1,
  44.                BB_USEREL, TRUE,
  45.                BB_DRAW,   {mydraw},
  46.                0,0])
  47.  
  48.  
  49.  
  50.  
  51.   bb.draw() -> The first draw on the window.
  52.  
  53.   LOOP
  54.  
  55.     REPEAT
  56.       Delay(3)
  57.       IF Mouse()=2 THEN Raise("HALT")
  58.     UNTIL (Mouse()=1 AND bb.check(MouseX(win), MouseY(win)))
  59.  
  60.     WHILE (Mouse()=1)
  61.       bb.setattrs([BB_POSX, MouseX(win), BB_POSY, MouseY(win), 0,0])
  62.       bb.draw()
  63.     ENDWHILE
  64.  
  65.   ENDLOOP
  66.  
  67.   bb.draw(FALSE)
  68.  
  69. /*
  70.   bb.setattrs([BB_MAXX,   100,
  71.                BB_MAXY,   100,
  72.                BB_WIDTH,   80,
  73.                BB_HEIGHT,  10,
  74.                BB_POSX,    50,
  75.                BB_POSY,     0,
  76.                NIL, NIL])
  77. */
  78.  
  79. EXCEPT DO
  80.   END bb
  81.  
  82.   IF win THEN CloseWindow(win)
  83.   IF scr THEN UnlockPubScreen (NIL, scr)
  84.  
  85.   IF exception<>"HALT" THEN explain_exception()
  86. ENDPROC
  87.  
  88. PROC mydraw(data:PTR TO bebox_data, mode)
  89.   SetDrMd(data.rp, 2)
  90.  
  91.   IF mode THEN IF (data.oldx=data.x) AND (data.oldy = data.y) THEN RETURN
  92.  
  93.   IF data.oldx<>-1
  94.     Move(data.rp, data.oldx, data.oldy)
  95.     SetAPen(data.rp, data.oldcol)
  96.  
  97.     Draw(data.rp, data.oldx + data.oldw, data.oldy)
  98.     Draw(data.rp, data.oldx + data.oldw, data.oldy + data.oldh)
  99.     Draw(data.rp, data.oldx, data.oldy + data.oldh)
  100.     Draw(data.rp, data.oldx, data.oldy)
  101.  
  102.     Draw(data.rp, data.oldx + data.oldw, data.oldy + data.oldh)
  103.     Move(data.rp, data.oldx + data.oldw, data.oldy)
  104.     Draw(data.rp, data.oldx, data.oldy + data.oldh)
  105.     data.oldx:=-1
  106.   ENDIF
  107.  
  108.   IF mode
  109.     Move(data.rp, data.x, data.y)
  110.     SetAPen(data.rp, data.col)
  111.     Draw(data.rp, data.x + data.w, data.y)
  112.     Draw(data.rp, data.x + data.w, data.y + data.h)
  113.     Draw(data.rp, data.x, data.y + data.h)
  114.     Draw(data.rp, data.x, data.y)
  115.  
  116.     Draw(data.rp, data.x + data.w, data.y + data.h)
  117.     Move(data.rp, data.x + data.w, data.y)
  118.     Draw(data.rp, data.x, data.y + data.h)
  119.  
  120.   ENDIF
  121.  
  122.   SetDrMd(data.rp, 0)
  123.  
  124. ENDPROC
  125.  
  126.